ff:=x*Exp[x*y];
P:=Plot3D[ff,{x,2.5,3.5}, {y,-0.5,0.5},Mesh->None,ImageSize->400,BoxRatios->{1,1,2}];
CP:=ContourPlot[ff,{x,2.5,3.5},{y,-0.5,0.5},ImageSize->400,Contours->20];
ba:={3,0};gf:=Normalize[{1,9}];
Ar:=Graphics[{Thick,Red,Arrow[{ba,ba+gf}],Text[Style["∇f ",36],ba+{0.1,0.1}]}];
GraphicsGrid[{{P,Show[CP,Ar]}}]

ff:=x*Exp[x*y];
Show[
ContourPlot[Evaluate[ff],{x,2.5,3.5}, {y,-0.5,0.5},Contours->20], 
VectorPlot[Evaluate[D[ff,{{x,y}}]],{x,2.5,3.5}, {y,-0.5,0.5},VectorPoints->{20,20},VectorScale->{Large,Scaled[1]},VectorColorFunction->Hue],
ImageSize->600
]

gg:=(x^2+3*y^2)*Exp[-x^2-y^2];
P:=Plot3D[gg,{x,-2.5,2.5}, {y,-2.5,2.5},Mesh->None,ImageSize->400];
CP:=ContourPlot[gg,{x,-2.5,2.5},{y,-2.5,2.5},ImageSize->400,Contours->20];
ba:={2,1};gf:=Normalize[{-3,-1}];
Ar:=Graphics[{Thick,Red,Arrow[{ba,ba+gf}],Text[Style["∇g ",36],ba+{0.2,0.2}]}];
GraphicsGrid[{{P,Show[CP,Ar]}}]

gg:=(x^2+3*y^2)*Exp[-x^2-y^2];
Show[
ContourPlot[Evaluate[gg],{x,-2.5,2.5},{y,-2.5,2.5},Contours->20], 
VectorPlot[Evaluate[D[gg,{{x,y}}]],{x,-2.5,2.5},{y,-2.5,2.5},VectorPoints->{20,20},VectorScale->{Large,Scaled[1]},VectorColorFunction->Hue],
ImageSize->600
]

(*Visualizing the Gradient on the Level Surface F(x,y,z)=0 of F(x,y,z)=z-x^2+y^2*)
Manipulate[Show[
ParametricPlot3D[{x,y,x^2-y^2},{x,-3,3},{y,-3,3},Mesh->None,ImageSize->{500,500},PlotRange->{{-9,9},{-9,9},{-9,9}},AxesOrigin->{0,0,0}],
Graphics3D[{Opacity[v],Arrow[{{s,t,s^2-t^2},{-s,3*t,s^2-t^2+1}}]}]
],
{{s,0,"a"},-3,3},{{t,0,"b"},-3,3},{{v,1,"∇F(a,b,(a^2)-(b^2))"},{0,1}}]

hh:=x^2-y^2;
P:=Plot3D[hh,{x,-10,10}, {y,-10,10},Mesh->None,ImageSize->400,BoxRatios->{1,1,3}];
CP:=ContourPlot[hh,{x,-10,10},{y,-10,10},ImageSize->400,Contours->20];
GraphicsGrid[{{P,CP}}]

hh:=x^2-y^2;
Show[
ContourPlot[Evaluate[hh],{x,-10,10},{y,-10,10},Contours->20], 
VectorPlot[Evaluate[D[hh,{{x,y}}]],{x,-10,10},{y,-10,10},VectorPoints->{20,20},VectorScale->{Large,Scaled[1]},VectorColorFunction->Hue],
ImageSize->600
]